"""
首先，因为集合是无序的，所以集合不支持:下标索引访问

"""

my_set = {"python", "java", "javascript", "php", "python", "java", "c++"}
print(f"my_set的内容是:{my_set},类型是{type(my_set)}")
my_empty_set = set()  # 定义空集合
print(f"my_empty_set的内容是:{my_empty_set},类型是{type(my_empty_set)}")

"""
但是集合和列表一样,是允许修改的，所以我们来看看集合的修改方法。
"""

# add添加新元素
my_set.add("vue")
print(f"添加元素后的集合为:{my_set}")

# remove移除元素
my_set.remove("php")
print(f"移除元素后的集合为:{my_set}")

# pop随机取出列表中的元素,会改变原数组
pop_el = my_set.pop()
print(f"随机取出的元素为:{pop_el},取出元素后集合为:{my_set}")

# 清空集合 clear
my_set.clear()
print(f"清空之后的集合为:{my_set}")

"""
取出2个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
"""
set1 = {1, 2, 3}
set2 = {1, 4, 5}
diff = set1.difference(set2)
print(f"set1与set2的差集为:{diff}")

"""
消除2个集合的差集
语法:集合1.difference update(集合2)
功能:对比集合1和集合2,在集合1内，删除和集合2相同的元素。
结果:集合1被修改,集合2不变
"""
set1.difference_update(set2)
print(f"删除集合1内和集合2相同的元素,{set1}")

"""
2个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
"""
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(f"合并后的集合为:{union_set},集合1为:{set1},集合2为:{set2}")

# 统计集合元素数量
set_count_el = len(union_set)
print(f"合并后的集合union_set的元素数量为:{set_count_el}")

# 集合的遍历

for x in union_set:
    print(x)

"""
可以容纳多个数据
可以容纳不同类型的数据(混装)
数据是无序存储的(不支持下标索引)
不允许重复数据存在
可以修改(增加或删除元素等)
支持for循环
"""
